#ifndef __InterfaceGraphique
#define __InterfaceGraphique

#include "ClefPrivee.h"
#include "ClefPublique.h"
#include "Contact.h"
#include "Agenda.h"
#include "Utilisateur.h"
#include "EnsUtilisateur.h"
#include "Crypter.h"
#include "Decrypter.h"
#include "Loguer.h"

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
#include <string.h>
#include <glib-2.0/glib.h>
#include <assert.h>
#include <gtk/gtk.h>

extern char etat_identification;

/** @brief Gère la fenêtre principale du programme */
void gestion_lancer_MainWindow(Utilisateur * u);

/** @brief Ferme la fenêtre principale et met la variable statique etat_identification à 2 afin de quitter le programme */
void gestion_quitter_MainWindow(GtkWidget* widget, gpointer data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton "Crypter" */
void gestion_crypter(GtkWidget * pButton1, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton "Décrypter" */
void gestion_decrypter(GtkWidget * pButton1, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le menu item "ajouter" du menu contact*/
void gestion_ajouter_contact(GtkWidget * pMenuItem, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton chercher un fichier à decrypter*/
void gestion_file_selection_decryptage(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton valider de la boite de dialogue de recherhe d'un fichier à decrypter*/
void gestion_recuperer_chemin_decryptage(GtkWidget *bouton, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton chercher un fichier à crypter*/
void gestion_file_selection_cryptage(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le valider de la boite de dialogue de rechere d'un fichier à crypter, ie affiche le texte dans la zone dédiée*/
void gestion_recuperer_chemin_cryptage(GtkWidget *bouton, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton selectionner un fichier de sortie*/
void gestion_file_selection_sortie(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur le bouton valider de la boite de dialogue selection du nom de fichier de sortie*/
void gestion_recuperer_chemin_sortie(GtkWidget *bouton, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur "changer d'utilisateur*/
void gestion_deconnecter(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur "selectionner un utilisateur" */
void gestion_selectionner_contact(GtkWidget* widget, GList * data);

/** @brief Met le nom du contact selectionné par l'utilisateur dans le pEntry1 */
void gestion_ajouter_nom_contact(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur "supprimer un utilisateur" */
void gestion_supprimer_contact(GtkWidget* widget, GList * data);

/** @brief Supprime le contact selectionné par l'utilisateur */
void gestion_supprimer_nom_contact(GtkWidget * widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur "Afficher clef" */
void gestion_afficher_clef(GtkWidget* widget, GList * data);

/** @brief Gère le signal émis lorque l'utilisateur clique sur "Aide" */
void gestion_information(GtkWidget * widget, GList * data);

#endif
